﻿
#include "module_WebOat.h"
#include <iostream>
#include <thread>
#include "module_WebOatRedis.h"


void redis() {
	WoRedisInit("192.168.1.210", 6379,"Hy.20010629");
	WoRedisClass p;
	CXMap<CXTextA, CXTextA> mm;
	mm["t1"] = "123";
	mm["t2"] = "456";
	mm["t3"] = "456";
	p.HSet("testaa", mm);
	p.HDel("testaa", "t1","t2");

}

void errHandler(WoHTTPContext& ctx) {


}

void post(WoHTTPContext& ctx) {
	auto json = ctx.GetJsonBody();
	std::cout << json << std::endl;
}

void get(WoHTTPContext& ctx) {
	WoJson j;
	j["msg"] = "ok";
	j["ip"] = ctx.GetConnectInfo().IP;
	ctx.ResponseJSON(j);

}

void server_run() {

	//redis();
	WoInit();

	//ref();

	//WoRefRegisterModelEx("LoginInfo",typeid(LoginInfo).name(),sizeof(LoginInfo));

	//auto reg = WoRefRegisterStruct("capt", Capt);
	//WoRefAddMember(reg, "id", Capt::ID, offsetof(Capt, ID));
	//WoRefAddMember(reg, "value", Capt::Value, offsetof(Capt, Value));

	//reg = WoRefRegisterStruct("LoginInfo", LoginInfo);
	//WoRefAddMember(reg,"username", LoginInfo::userName,offsetof(LoginInfo, userName));
	//WoRefAddMember(reg,"密码", LoginInfo::密码,offsetof(LoginInfo, 密码));
	try
	{
		WoServerClass server = WoGetAppServer();


		server.SetErrorHandler(errHandler);
		server.GET("/get", get);
		server.POST("/hello/post", post);
		server.Bind("0.0.0.0", 8090);
		server.Run();
	}
	catch (...)
	{
		std::cout << "emm";
	}


	WoDestroy();
}

void test_sql() {
	o("test.db");
}



int main()
{
	try {
		//test_sql();
		//ref();
		server_run();
		//sqls();
		//ref();

	}
	catch (std::exception& err) {
		std::cout << "error:"<< err.what();
	}
	catch (...) {
		std::rethrow_exception(std::current_exception());
	}

	return 0;
}


//int main()
//{
//	
//	//_CrtSetBreakAlloc(199);
//	WoInit();
//	
//	WoServerClass server = WoGetAppServer();
//	WoHttpGroup 路由分组A("/group");
//	路由分组A.Use(中间件A);
//	WoHttpGroup 路由分组B = 路由分组A.Group("/{name}");
//	路由分组B.Use(中间件B);
//	server.GET("/hello", hello, &路由分组B);
//	server.GET("/tamp", tamp, &路由分组B);
//
//	server.POST("/post",posth);
//	server.Bind("0.0.0.0", 8090);
//	//server.SetErrorHandler(h404);
//	std::thread t([&]() {
//			server.Run();
//		});
//	for (int i=0;i<11999;i++) {
//		Sleep(1000);
//	}
//	server.Stop();
//	WoDestroy();
//	t.detach();
//	return 0;
//}
